#ifndef LINKED_COMMON_H
#define LINKED_COMMON_H

//定义结构体，链表中节点
typedef struct Node
{
    void * data;
    struct Node * prev;
    struct Node * next;
}Node;

//定义结构体，链表
typedef struct 
{
    Node * head;
    Node * tail;
    int size;
}LinkedList;

//创建节点
void* create_Node(void* data);

//初始化链表
void init_linkedlist(LinkedList* linkedlist);

//从头部插入节点
void prepend(LinkedList* linkedlist,void* data);

//遍历链表
void print_linkedlist(LinkedList* linkedlist);

//根据数据查询节点
Node* search(LinkedList* linkedlist,void* data);

//从尾部加入节点
void append(LinkedList* linkedlist,void* data);

//从中间插入节点
void insert_after(LinkedList* linkedlist,Node* prev_node,void* data);

//更新节点数据
void update(Node* node,void* data);

//删除节点
void delete_list(LinkedList* linkedlist,Node* node);

//清空链表
void clear_linkedlist(LinkedList* linkedlist);


#endif